package com.hxzy.shop.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class OrderDeliver implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @ApiModelProperty("id")
    private Long id;

    /**
     * 订单id
     */
    @ApiModelProperty("订单id")
    private Long orderId;

    /**
     * 订单来源：
     * <p>
     * 101.美团（外卖&闪购）
     * <p>
     * 102.饿了么
     * <p>
     * 103.京东到家
     * <p>
     * 201.商家web网站
     * <p>
     * 202.商家小程序-微信
     * <p>
     * 203.商家小程序-支付宝
     * <p>
     * 204.商家APP
     * <p>
     * 205.商家热线
     * <p>
     * 其他，请直接填写中文字符串，最长不超过20个字符
     * <p>
     * 非「其他」需传代码
     */
    @ApiModelProperty("订单来源")
    private String outerOrderSourceDesc;

    /**
     * 原平台订单号，如订单来源为美团，该字段必填，且为美团平台生成的订单号，最长不超过32个字符
     */
    @ApiModelProperty("原平台订单号，如订单来源为美团，该字段必填，且为美团平台生成的订单号，最长不超过32个字符")
    private String outerOrderSourceNo;

    /**
     * 门店id
     */
    @ApiModelProperty("门店id")
    private Long shopId;

    /**
     * 配送服务代码，详情见合同
     * <p>
     * 1）服务包
     * <p>
     * 飞速达:4002
     * <p>
     * 快速达:4011
     * <p>
     * 及时达:4012
     * <p>
     * 集中送:4013
     * <p>
     * 跑腿-帮送:4031
     * <p>
     * 2）新服务产品
     * <p>
     * 具体可参考新服务产品列表
     */
    @ApiModelProperty("配送服务代码")
    private Integer deliveryServiceCode;

    /**
     * 收件人名称，最长不超过256个字符
     */
    @ApiModelProperty("收件人名称，最长不超过256个字符")
    private String receiverName;

    /**
     * 收件人地址，最长不超过512个字符
     */
    @ApiModelProperty("收件人地址，最长不超过512个字符")
    private String receiverAddress;

    /**
     * 收件人电话
     */
    @ApiModelProperty("收件人电话")
    private String receiverPhone;

    /**
     * 收件人电话-备用
     */
    @ApiModelProperty("收件人电话-备用")
    private String receiverPhoneSpare;

    /**
     * 收件人经度（火星坐标或百度坐标，和 coordinate_type 字段配合使用），坐标 * （10的六次方），如 116398419
     */
    @ApiModelProperty("收件人经度（火星坐标或百度坐标，和 coordinate_type 字段配合使用），坐标 * （10的六次方），如 116398419")
    private Long receiverLng;

    /**
     * 收件人维度
     */
    @ApiModelProperty("收件人维度")
    private Long receiverLat;

    /**
     * 坐标类型，0：火星坐标（高德，腾讯地图均采用火星坐标） 1：百度坐标 （默认值为0）
     */
    @ApiModelProperty("坐标类型，0：火星坐标（高德，腾讯地图均采用火星坐标） 1：百度坐标 （默认值为0）")
    private Integer coordinateType;

    /**
     * 货物价格，单位为元，精确到小数点后两位（如果小数点后位数多于两位，则四舍五入保留两位小数），范围为0-5000
     * <p>
     * 跑腿-帮送服务包：范围0-3000
     */
    @ApiModelProperty("货物价格，单位为元，精确到小数点后两位")
    private BigDecimal goodsValue;

    /**
     * 货物高度，单位为cm，精确到小数点后两位（如果小数点后位数多于两位，则四舍五入保留两位小数），范围为0-45
     */
    @ApiModelProperty("货物高度，单位为cm，精确到小数点后两位（如果小数点后位数多于两位，则四舍五入保留两位小数），范围为0-45")
    private Double goodsHeight;

    /**
     * 货物宽度
     */
    @ApiModelProperty("货物宽度")
    private Double goodsWidth;

    /**
     * 货物长度
     */
    @ApiModelProperty("货物长度")
    private Double goodsLength;

    /**
     * 货物重量，单位为kg，精确到小数点后两位（如果小数点后位数多于两位，则四舍五入保留两位小数），范围为0-50
     * <p>
     * 跑腿-帮送服务包：范围0-20
     */
    @ApiModelProperty("货物重量，单位为kg，精确到小数点后两位")
    private Double goodsWeight;

    /**
     * 货物交付信息，最长不超过100个字符
     */
    @ApiModelProperty("货物交付信息，最长不超过100个字符")
    private String goodsDeliveryInfo;

    /**
     * 货物取货信息，用于骑手到店取货，最长不超过100个字符
     */
    @ApiModelProperty("货物取货信息，用于骑手到店取货，最长不超过100个字符")
    private String goodsPickupInfo;

    /**
     * 订单类型，默认为0
     * <p>
     * 0: 即时单(尽快送达，限当日订单)
     * <p>
     * 1: 预约单
     * <p>
     * 跑腿-帮送服务包预约单，会存在骑手提前接单的可能
     */
    @ApiModelProperty("订单类型")
    private Integer orderType;

    /**
     * 门店订单流水号，建议提供，方便骑手门店取货，最长不超过32个字符
     */
    @ApiModelProperty("门店订单流水号，建议提供，方便骑手门店取货，最长不超过32个字符")
    private String poiSeq;

    /**
     * 支付方式，0、账期支付，1、余额支付；
     * <p>
     * 当前门店可支持的支付方式可以通过查询门店信息接口获取；选择余额支付时，建单成功后若账户余额扣款失败，则美团系统自动会发起订单取消；建单成功后会返回支付方式对应的付款方式。
     */
    @ApiModelProperty("支付方式，0、账期支付，1、余额支付")
    private Integer payTypeCode;

    /**
     * 商户id
     */
    @ApiModelProperty("商户id")
    private Long merchantId;

    /**
     * 配送状态
     */
    @ApiModelProperty("配送状态")
    private Integer status;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 接单时间
     */
    @ApiModelProperty("接单时间")
    private Date receiveTime;

    /**
     * 取货时间
     */
    @ApiModelProperty("取货时间")
    private Date pickUpTime;

    /**
     * 送达时间
     */
    @ApiModelProperty("送达时间")
    private Date deliveryTime;

    /**
     * 取消时间
     */
    @ApiModelProperty("取消时间")
    private Date cancelTime;

    /**
     * 取消理由
     */
    @ApiModelProperty("取消理由")
    private String cancelReason;
}
